<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFrameworks>$(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-linux;$(NetCoreAppCurrent)-freebsd;$(NetCoreAppCurrent)-haiku;$(NetCoreAppCurrent)-android;$(NetCoreAppCurrent)-osx;$(NetCoreAppCurrent)-ios;$(NetCoreAppCurrent)-tvos;$(NetCoreAppCurrent)</TargetFrameworks>
    <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
    <!-- This is needed so that code for TlsCipherSuite will have no namespace (causes compile errors) when used within T4 template  -->
    <DefineConstants>$(DefineConstants);PRODUCT</DefineConstants>
    <UseCompilerGeneratedDocXmlFile>false</UseCompilerGeneratedDocXmlFile>
  </PropertyGroup>

  <!-- DesignTimeBuild requires all the TargetFramework Derived Properties to not be present in the first property group. -->
  <PropertyGroup>
    <TargetPlatformIdentifier>$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)'))</TargetPlatformIdentifier>
    <GeneratePlatformNotSupportedAssemblyMessage Condition="'$(TargetPlatformIdentifier)' == ''">SR.SystemNetSecurity_PlatformNotSupported</GeneratePlatformNotSupportedAssemblyMessage>
    <ApiExclusionListPath Condition="'$(TargetPlatformIdentifier)' == ''">ExcludeApiList.PNSE.txt</ApiExclusionListPath>
    <DefineConstants Condition="'$(TargetPlatformIdentifier)' == 'windows'">$(DefineConstants);TARGET_WINDOWS</DefineConstants>
    <DefineConstants Condition="'$(TargetPlatformIdentifier)' == 'android'">$(DefineConstants);TARGET_ANDROID</DefineConstants>
    <UseAndroidCrypto Condition="'$(TargetPlatformIdentifier)' == 'android'">true</UseAndroidCrypto>
    <UseAppleCrypto Condition="'$(TargetPlatformIdentifier)' == 'osx' or '$(TargetPlatformIdentifier)' == 'ios' or '$(TargetPlatformIdentifier)' == 'tvos'">true</UseAppleCrypto>
    <UseManagedNtlm Condition="'$(TargetPlatformIdentifier)' == 'android' or '$(TargetPlatformIdentifier)' == 'tvos'">true</UseManagedNtlm>
    <DefineConstants Condition="'$(UseAndroidCrypto)' == 'true' or '$(UseAppleCrypto)' == 'true'">$(DefineConstants);SYSNETSECURITY_NO_OPENSSL</DefineConstants>
    <GenAPIExcludeApiList>ReferenceAssemblyExclusions.txt</GenAPIExcludeApiList>
  </PropertyGroup>

  <Import Project="$(CommonPath)System\Security\Cryptography\Asn1Reader\System.Security.Cryptography.Asn1Reader.Shared.projitems" Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformIdentifier)' != 'windows'" />

  <ItemGroup>
    <Compile Include="System\Security\Authentication\ExtendedProtection\ExtendedProtectionPolicy.cs" />
    <Compile Include="System\Security\Authentication\ExtendedProtection\ServiceNameCollection.cs" />
    <Compile Include="$(CommonPath)System\Obsoletions.cs"
             Link="Common\System\Obsoletions.cs" />
    <Compile Include="$(CommonPath)System\Net\UriScheme.cs"
             Link="Common\System\Net\UriScheme.cs" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetPlatformIdentifier)' != ''">
    <Compile Include="System\Net\CertificateValidationPal.cs" />
    <Compile Include="System\Net\NegotiateAuthenticationPal.cs" />
    <Compile Include="System\Net\NegotiateAuthenticationPal.Unsupported.cs" />
    <Compile Include="System\Net\SslStreamContext.cs" />
    <Compile Include="System\Net\Security\AuthenticatedStream.cs" />
    <Compile Include="System\Security\Authentication\AuthenticationException.cs" />
    <Compile Include="System\Net\Security\CipherSuitesPolicy.cs" />
    <Compile Include="System\Net\Security\NegotiateAuthentication.cs" />
    <Compile Include="System\Net\Security\NegotiateAuthenticationClientOptions.cs" />
    <Compile Include="System\Net\Security\NegotiateAuthenticationServerOptions.cs" />
    <Compile Include="System\Net\Security\NegotiateAuthenticationStatusCode.cs" />
    <Compile Include="System\Net\Security\NetEventSource.Security.cs" />
    <Compile Include="System\Net\Security\NetSecurityTelemetry.cs" />
    <Compile Include="System\Net\Security\ReadWriteAdapter.cs" />
    <Compile Include="System\Net\Security\ProtectionLevel.cs" />
    <Compile Include="System\Net\Security\SslApplicationProtocol.cs" />
    <Compile Include="System\Net\Security\SslAuthenticationOptions.cs" />
    <Compile Include="System\Net\Security\SslCertificateTrust.cs" />
    <Compile Include="System\Net\Security\SslClientAuthenticationOptions.cs" />
    <Compile Include="System\Net\Security\SslClientHelloInfo.cs" />
    <Compile Include="System\Net\Security\SslServerAuthenticationOptions.cs" />
    <Compile Include="System\Net\Security\SslSessionsCache.cs" />
    <Compile Include="System\Net\Security\SslStream.cs" />
    <Compile Include="System\Net\Security\SslStream.IO.cs" />
    <Compile Include="System\Net\Security\SslStream.Protocol.cs" />
    <Compile Include="System\Net\Security\SslStreamCertificateContext.cs" />
    <Compile Include="System\Net\Security\SslConnectionInfo.cs" />
    <Compile Include="System\Net\Security\StreamSizes.cs" />
    <Compile Include="System\Net\Security\TlsAlertType.cs" />
    <Compile Include="System\Net\Security\TlsFrameHelper.cs" />
    <!-- NegotiateStream -->
    <Compile Include="System\Net\SecurityStatusPal.cs" />
    <Compile Include="System\Net\StreamFramer.cs" />
    <Compile Include="System\Net\Security\NegotiateStream.cs" />
    <Compile Include="System\Security\Authentication\ExtendedProtection\PolicyEnforcement.cs" />
    <Compile Include="System\Security\Authentication\ExtendedProtection\ProtectionScenario.cs" />
    <!-- IP parser -->
    <Compile Include="$(CommonPath)System\Net\IPv4AddressHelper.Common.cs"
             Link="System\Net\IPv4AddressHelper.Common.cs" />
    <Compile Include="$(CommonPath)System\Net\IPv6AddressHelper.Common.cs"
             Link="System\Net\IPv6AddressHelper.Common.cs" />
    <Compile Include="$(CommonPath)System\Net\IPAddressParserStatics.cs"
             Link="Common\System\Net\IPAddressParserStatics.cs" />
    <!-- Common sources -->
    <Compile Include="$(CommonPath)DisableRuntimeMarshalling.cs"
             Link="Common\DisableRuntimeMarshalling.cs" />
    <!-- Logging -->
    <Compile Include="$(CommonPath)System\Net\Logging\NetEventSource.Common.cs"
             Link="Common\System\Net\Logging\NetEventSource.Common.cs" />
    <Compile Include="$(CommonPath)System\Net\Logging\NetEventSource.Common.DumpBuffer.cs"
             Link="Common\System\Net\Logging\NetEventSource.Common.DumpBuffer.cs" />
    <Compile Include="$(CommonPath)System\Net\InternalException.cs"
             Link="Common\System\Net\InternalException.cs" />
    <!-- Debug only -->
    <Compile Include="$(CommonPath)System\Net\DebugSafeHandle.cs"
             Link="Common\System\Net\DebugSafeHandle.cs" />
    <Compile Include="$(CommonPath)System\Net\DebugSafeHandleZeroOrMinusOneIsInvalid.cs"
             Link="Common\System\Net\DebugSafeHandleZeroOrMinusOneIsInvalid.cs" />
    <!-- System.Net common -->
    <Compile Include="$(CommonPath)System\Net\ArrayBuffer.cs">
       <Link>Common\System\Net\ArrayBuffer.cs</Link>
    </Compile>
    <Compile Include="$(CommonPath)System\Net\ExceptionCheck.cs"
             Link="Common\System\Net\ExceptionCheck.cs" />
    <Compile Include="$(CommonPath)System\Net\SecurityProtocol.cs"
             Link="Common\System\Net\SecurityProtocol.cs" />
    <!-- Common -->
    <Compile Include="$(CommonPath)System\NotImplemented.cs"
             Link="Common\System\NotImplemented.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\TlsAlertMessage.cs"
             Link="Common\System\Net\Security\TlsAlertMessage.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\TargetHostNameHelper.cs"
             Link="Common\System\Net\Security\TargetHostNameHelper.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\SafeCredentialReference.cs"
             Link="Common\System\Net\Security\SafeCredentialReference.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\SSPIHandleCache.cs"
             Link="Common\System\Net\Security\SSPIHandleCache.cs" />
    <Compile Include="$(CommonPath)System\Net\NegotiationInfoClass.cs"
             Link="Common\System\Net\NegotiationInfoClass.cs" />
    <Compile Include="$(CommonPath)System\HexConverter.cs"
             Link="Common\System\HexConverter.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\Interop.SECURITY_STATUS.cs"
             Link="Common\Interop\Windows\SChannel\Interop.SECURITY_STATUS.cs" />
  </ItemGroup>

  <!-- This file depends on IANA registry. We do not want anyone's build to break after the update -->
  <!-- or if they don't have internet connection - explicit opt-in required -->
  <!-- To expose newly generated APIs, generated file have to be deliberately copied -->
  <ItemGroup Condition="'$(TargetPlatformIdentifier)' != ''">
    <Compile Include="System\Net\Security\TlsCipherSuite.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>TlsCipherSuite.tt</DependentUpon>
    </Compile>
    <None Include="System\Net\Security\TlsCipherSuiteNameParser.ttinclude" />
  </ItemGroup>
  <ItemGroup Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformIdentifier)' != 'windows'">
    <Compile Include="System\Net\Security\SslConnectionInfo.Unix.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>SslConnectionInfo.Unix.tt</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup Condition="'$(TargetPlatformIdentifier)' == 'windows'">
    <None Include="System\Net\Security\SslConnectionInfo.Unix.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>SslConnectionInfo.Unix.tt</DependentUpon>
    </None>
  </ItemGroup>
  <ItemGroup Condition="'$(AllowTlsCipherSuiteGeneration)' == 'true'">
    <None Include="System\Net\Security\TlsCipherSuite.tt">
      <Generator>TextTemplatingFileGenerator</Generator>
      <LastGenOutput>TlsCipherSuite.cs</LastGenOutput>
    </None>
    <None Include="System\Net\Security\SslConnectionInfo.Unix.tt">
      <Generator>TextTemplatingFileGenerator</Generator>
      <LastGenOutput>SslConnectionInfo.Unix.cs</LastGenOutput>
    </None>
  </ItemGroup>

  <ItemGroup Condition="'$(AllowTlsCipherSuiteGeneration)' != 'true'">
    <None Include="System\Net\Security\TlsCipherSuite.tt" />
    <None Include="System\Net\Security\SslConnectionInfo.Unix.tt" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetPlatformIdentifier)' == 'windows'">
    <Compile Include="System\Net\CertificateValidationPal.Windows.cs" />
    <Compile Include="System\Net\NegotiateAuthenticationPal.Windows.cs" />
    <Compile Include="System\Net\Security\CipherSuitesPolicyPal.Windows.cs" />
    <Compile Include="System\Net\Security\SslStreamCertificateContext.Windows.cs" />
    <Compile Include="System\Net\Security\SslStreamPal.Windows.cs" />
    <Compile Include="System\Net\Security\SslConnectionInfo.Windows.cs" />
    <Compile Include="System\Net\Security\StreamSizes.Windows.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\NetEventSource.Security.Windows.cs"
             Link="Common\System\Net\Security\NetEventSource.Security.Windows.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\CertificateValidation.Windows.cs"
             Link="Common\System\Net\Security\CertificateValidation.Windows.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\SecurityBuffer.Windows.cs"
             Link="Common\System\Net\Security\SecurityBuffer.Windows.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\SecurityBufferType.Windows.cs"
             Link="Common\System\Net\Security\SecurityBufferType.Windows.cs" />
    <!-- NegotiateStream -->
    <Compile Include="System\Net\SecurityStatusAdapterPal.Windows.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\SecurityContextTokenHandle.cs"
             Link="Common\System\Net\Security\SecurityContextTokenHandle.cs" />
    <!-- Interop -->
    <Compile Include="$(CommonPath)Interop\Windows\Interop.BOOL.cs"
             Link="Common\Interop\Windows\Interop.BOOL.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Interop.Libraries.cs"
             Link="Common\Interop\Windows\Interop.Libraries.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Interop.UNICODE_STRING.cs"
             Link="Common\Interop\Windows\Interop.UNICODE_STRING.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CERT_CONTEXT.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.CERT_CONTEXT.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CERT_INFO.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.CERT_INFO.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CERT_PUBLIC_KEY_INFO.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.CERT_PUBLIC_KEY_INFO.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CRYPT_ALGORITHM_IDENTIFIER.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.Interop.CRYPT_ALGORITHM_IDENTIFIER.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CRYPT_BIT_BLOB.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.Interop.CRYPT_BIT_BLOB.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.DATA_BLOB.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.DATA_BLOB.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.certificates.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.certificates.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.certificates_types.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.certificates_types.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CertEnumCertificatesInStore.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.CertEnumCertificatesInStore.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.MsgEncodingType.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.Interop.MsgEncodingType.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CertContextPropId.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.CertContextPropId.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CertDuplicateCertificateContext.cs"
             Link="Common\Interop\Windows\Crypt32\Interop.CertDuplicateCertificateContex.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Crypt32\Interop.CertGetCertificateContextProperty_NO_NULLABLE.cs"
                 Link="Common\Interop\Windows\Crypt32\Interop.CertGetCertificateContextProperty_NO_NULLABLE.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeCrypt32Handle.cs"
             Link="Common\Microsoft\Win32\SafeHandles\SafeCrypt32Handle.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeHandleCache.cs"
                 Link="Common\Microsoft\Win32\SafeHandles\SafeHandleCache.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeCertContextHandle.cs"
             Link="Common\Microsoft\Win32\SafeHandles\SafeCertContextHandle.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\Kernel32\Interop.CloseHandle.cs"
             Link="Common\Interop\Windows\Kernel32\Interop.CloseHandle.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\Interop.Alerts.cs"
             Link="Common\Interop\Windows\SChannel\Interop.Alerts.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\Interop.Session.cs"
             Link="Common\Interop\Windows\SChannel\Interop.Session.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\Interop.SchProtocols.cs"
             Link="Common\Interop\Windows\SChannel\Interop.SchProtocols.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\SecPkgContext_ConnectionInfo.cs"
             Link="Common\Interop\Windows\SChannel\SecPkgContext_ConnectionInfo.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\SecPkgContext_CipherInfo.cs"
             Link="Common\Interop\Windows\SChannel\SecPkgContext_CipherInfo.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\Interop.SecPkgContext_ApplicationProtocol.cs"
             Link="Common\Interop\Windows\SChannel\Interop.SecPkgContext_ApplicationProtocol.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\Interop.Sec_Application_Protocols.cs"
             Link="Common\Interop\Windows\SChannel\Interop.Sec_Application_Protocols.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\UnmanagedCertificateContext.cs"
             Link="Common\Interop\Windows\SChannel\UnmanagedCertificateContext.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SChannel\UnmanagedCertificateContext.IntPtr.cs"
             Link="Common\Interop\Windows\SChannel\UnmanagedCertificateContext.IntPtr.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SecPkgContext_Bindings.cs"
             Link="Common\Interop\Windows\SspiCli\SecPkgContext_Bindings.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\GlobalSSPI.cs"
             Link="Common\Interop\Windows\SspiCli\GlobalSSPI.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\Interop.SSPI.cs"
             Link="Common\Interop\Windows\SspiCli\Interop.SSPI.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SecPkgContext_NegotiationInfoW.cs"
             Link="Common\Interop\Windows\SspiCli\SecPkgContext_NegotiationInfoW.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\NegotiationInfoClass.cs"
             Link="Common\Interop\Windows\SspiCli\NegotiationInfoClass.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SecPkgContext_Sizes.cs"
             Link="Common\Interop\Windows\SspiCli\SecPkgContext_Sizes.cs" />
    <Compile Include="$(CommonPath)System\Collections\Generic\BidirectionalDictionary.cs"
             Link="Common\System\Collections\Generic\BidirectionalDictionary.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SafeDeleteContext.cs"
             Link="Common\Interop\Windows\SspiCli\SafeDeleteContext.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SecurityPackageInfo.cs"
             Link="Common\Interop\Windows\SspiCli\SecurityPackageInfo.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SecurityPackageInfoClass.cs"
             Link="Common\Interop\Windows\SspiCli\SecurityPackageInfoClass.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SecuritySafeHandles.cs"
             Link="Common\Interop\Windows\SspiCli\SecuritySafeHandles.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SSPIAuthType.cs"
             Link="Common\Interop\Windows\SspiCli\SSPIAuthType.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\ISSPIInterface.cs"
             Link="Common\Interop\Windows\SspiCli\ISSPIInterface.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SSPISecureChannelType.cs"
             Link="Common\Interop\Windows\SspiCli\SSPISecureChannelType.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SSPIWrapper.cs"
             Link="Common\Interop\Windows\SspiCli\SSPIWrapper.cs" />
    <Compile Include="$(CommonPath)Interop\Windows\SspiCli\SecPkgContext_StreamSizes.cs"
             Link="Common\Interop\Windows\SspiCli\SecPkgContext_StreamSizes.cs" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformIdentifier)' != 'windows'">
    <Compile Include="$(CommonPath)Interop\Unix\Interop.Libraries.cs"
             Link="Common\Interop\Unix\Interop.Libraries.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\Interop.Errors.cs"
             Link="Common\Interop\Unix\Interop.Errors.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.GssFlags.cs"
             Link="Common\Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.GssFlags.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.PackageType.cs"
             Link="Common\Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.PackageType.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.Status.cs"
             Link="Common\Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.Status.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\Unix\SafeDeleteContext.cs"
             Link="Common\System\Net\Security\Unix\SafeDeleteContext.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\Unix\SafeFreeCredentials.cs"
             Link="Common\System\Net\Security\Unix\SafeFreeCredentials.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\Unix\SecChannelBindings.cs"
             Link="Common\System\Net\Security\Unix\SecChannelBindings.cs" />
    <Compile Include="System\Net\Security\Pal.Managed\EndpointChannelBindingToken.cs" />
    <Compile Include="System\Net\Security\Pal.Managed\SafeChannelBindingHandle.cs" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformIdentifier)' != 'windows' and '$(UseManagedNtlm)' != 'true'">
    <ILLinkSubstitutionsXmls Include="$(ILLinkDirectory)ILLink.Substitutions.xml" />
    <Compile Include="System\Net\NegotiateAuthenticationPal.Unix.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\GssSafeHandles.cs"
             Link="Common\Microsoft\Win32\SafeHandles\GssSafeHandles.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Net.Security.Native\Interop.Initialization.cs"
             Link="Common\Interop\Unix\System.Net.Security.Native\Interop.Initialization.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Net.Security.Native\Interop.GssApiException.cs"
             Link="Common\Interop\Unix\System.Net.Security.Native\Interop.GssApiException.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Net.Security.Native\Interop.GssBuffer.cs"
             Link="Common\Interop\Unix\System.Net.Security.Native\Interop.GssBuffer.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.cs"
             Link="Common\Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.IsNtlmInstalled.cs"
             Link="Common\Interop\Unix\System.Net.Security.Native\Interop.NetSecurityNative.IsNtlmInstalled.cs" />
  </ItemGroup>

  <ItemGroup Condition="'$(UseManagedNtlm)' == 'true'">
    <Compile Include="System\Net\NegotiateAuthenticationPal.Managed.cs" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformIdentifier)' != 'windows'">
    <Compile Include="System\Net\NegotiateAuthenticationPal.ManagedNtlm.cs" />
    <Compile Include="System\Net\NegotiateAuthenticationPal.ManagedSpnego.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\MD4.cs"
             Link="Common\System\Net\Security\MD4.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\RC4.cs"
             Link="Common\System\Net\Security\RC4.cs" />
    <Compile Include="$(CommonPath)System\Security\Cryptography\CryptoPool.cs"
             Link="Common\System\Security\Cryptography\CryptoPool.cs" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformIdentifier)' != 'windows' and '$(UseAndroidCrypto)' != 'true' and '$(UseAppleCrypto)' != 'true'">
    <Compile Include="System\Net\CertificateValidationPal.Unix.cs" />
    <Compile Include="System\Net\Security\CipherSuitesPolicyPal.Linux.cs" />
    <Compile Include="System\Net\Security\SslStreamPal.Unix.cs" />
    <Compile Include="System\Net\Security\SslConnectionInfo.Linux.cs" />
    <Compile Include="System\Net\Security\SslStreamCertificateContext.Linux.cs" />
    <Compile Include="System\Net\Security\StreamSizes.Unix.cs" />
    <Compile Include="$(CommonPath)System\Net\Http\X509ResourceClient.cs"
             Link="Common\System\Net\Http\X509ResourceClient.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\CertificateValidation.Unix.cs"
             Link="Common\System\Net\Security\CertificateValidation.Unix.cs" />
    <Compile Include="$(CommonPath)System\Text\UrlBase64Encoding.cs"
             Link="Common\System\Text\UrlBase64Encoding.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.ASN1.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.ASN1.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.BIO.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.BIO.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.ERR.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.ERR.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.Initialization.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.Initialization.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.Crypto.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.Crypto.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.OCSP.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.OCSP.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.OpenSsl.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.OpenSsl.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.OpenSslVersion.cs"
                 Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.OpenSslVersion.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.Ssl.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.Ssl.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.SslCtx.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.SslCtx.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.SetProtocolOptions.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.SetProtocolOptions.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.SslCtxOptions.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.SslCtxOptions.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.X509.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.X509.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.X509Name.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.X509Name.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.X509Ext.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.X509Ext.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.X509Stack.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.X509Stack.cs" />
    <Compile Include="$(CommonPath)Interop\Unix\System.Security.Cryptography.Native\Interop.X509StoreCtx.cs"
             Link="Common\Interop\Unix\System.Security.Cryptography.Native\Interop.X509StoreCtx.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeX509Handles.Unix.cs"
             Link="Common\Microsoft\Win32\SafeHandles\SafeX509Handles.Unix.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\X509ExtensionSafeHandles.Unix.cs"
             Link="Common\Microsoft\Win32\SafeHandles\X509ExtensionSafeHandles.Unix.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeInteriorHandle.cs"
             Link="Common\Microsoft\Win32\SafeHandles\SafeInteriorHandle.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeBioHandle.Unix.cs"
             Link="Common\Microsoft\Win32\SafeHandles\SafeBioHandle.Unix.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\Asn1SafeHandles.Unix.cs"
             Link="Common\Microsoft\Win32\SafeHandles\Asn1SafeHandles.Unix.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeHandleCache.cs"
             Link="Common\Microsoft\Win32\SafeHandles\SafeHandleCache.cs" />
    <Compile Include="$(CommonPath)System\Net\Security\Unix\SafeDeleteSslContext.cs"
             Link="Common\System\Net\Security\Unix\SafeDeleteSslContext.cs" />
  </ItemGroup>

  <ItemGroup Condition="'$(UseAndroidCrypto)' == 'true'">
    <Compile Include="$(CommonPath)Interop\Android\Interop.Libraries.cs"
             Link="Common\Interop\Android\Interop.Libraries.cs" />
    <Compile Include="$(CommonPath)Interop\Android\Interop.JObjectLifetime.cs"
             Link="Common\Interop\Android\Interop.JObjectLifetime.cs" />
    <Compile Include="$(CommonPath)Interop\Android\System.Security.Cryptography.Native.Android\Interop.Ssl.cs"
             Link="Common\Interop\Android\System.Security.Cryptography.Native.Android\Interop.Ssl.cs" />
    <Compile Include="$(CommonPath)Interop\Android\System.Security.Cryptography.Native.Android\Interop.Ssl.ProtocolSupport.cs"
             Link="Common\Interop\Android\System.Security.Cryptography.Native.Android\Interop.Ssl.ProtocolSupport.cs" />
    <Compile Include="$(CommonPath)Interop\Android\System.Security.Cryptography.Native.Android\Interop.X509.cs"
             Link="Common\Interop\Android\System.Security.Cryptography.Native.Android\Interop.X509.cs" />
    <Compile Include="System\Net\CertificateValidationPal.Android.cs" />
    <Compile Include="System\Net\Security\Pal.Android\SafeDeleteSslContext.cs" />
    <Compile Include="System\Net\Security\Pal.Managed\SslProtocolsValidation.cs" />
    <Compile Include="System\Net\Security\SslConnectionInfo.Android.cs" />
    <Compile Include="System\Net\Security\SslStream.Android.cs" />
    <Compile Include="System\Net\Security\SslStreamCertificateContext.Android.cs" />
    <Compile Include="System\Net\Security\SslStreamPal.Android.cs" />
    <Compile Include="System\Net\Security\StreamSizes.Unix.cs" />
    <Compile Include="System\Net\Security\CipherSuitesPolicyPal.Android.cs" />
  </ItemGroup>

  <ItemGroup Condition="'$(UseAppleCrypto)' == 'true'">
    <Compile Include="$(CommonPath)Interop\OSX\Interop.CoreFoundation.cs"
             Link="Common\Interop\OSX\Interop.CoreFoundation.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\Interop.CoreFoundation.CFArray.cs"
             Link="Common\Interop\OSX\Interop.CoreFoundation.CFArray.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\Interop.CoreFoundation.CFData.cs"
             Link="Common\Interop\OSX\Interop.CoreFoundation.CFData.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\Interop.CoreFoundation.CFDate.cs"
             Link="Common\Interop\OSX\Interop.CoreFoundation.CFDate.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\Interop.CoreFoundation.CFError.cs"
             Link="Common\Interop\OSX\Interop.CoreFoundation.CFError.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\Interop.CoreFoundation.CFString.cs"
             Link="Common\Interop\OSX\Interop.CoreFoundation.CFString.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\Interop.Libraries.cs"
             Link="Common\Interop\OSX\Interop.Libraries.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\System.Security.Cryptography.Native.Apple\Interop.SecErrMessage.cs"
             Link="Common\Interop\OSX\System.Security.Cryptography.Native.Apple\Interop.SecErrMessage.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\System.Security.Cryptography.Native.Apple\Interop.SslErr.cs"
             Link="Common\Interop\OSX\System.Security.Cryptography.Native.Apple\Interop.SslErr.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\System.Security.Cryptography.Native.Apple\Interop.Ssl.cs"
             Link="Common\Interop\OSX\System.Security.Cryptography.Native.Apple\Interop.Ssl.cs" />
    <Compile Include="$(CommonPath)Interop\OSX\System.Security.Cryptography.Native.Apple\Interop.X509Chain.cs"
             Link="Common\Interop\OSX\System.Security.Cryptography.Native.Apple\Interop.X509Chain.cs" />
    <Compile Include="$(CommonPath)Microsoft\Win32\SafeHandles\SafeCreateHandle.OSX.cs"
             Link="Common\Microsoft\Win32\SafeHandles\SafeCreateHandle.OSX.cs" />
    <Compile Include="System\Net\CertificateValidationPal.OSX.cs" />
    <Compile Include="System\Net\Security\Pal.Managed\SslProtocolsValidation.cs" />
    <Compile Include="System\Net\Security\Pal.OSX\SafeDeleteSslContext.cs" />
    <Compile Include="System\Net\Security\SslConnectionInfo.OSX.cs" />
    <Compile Include="System\Net\Security\SslStreamCertificateContext.OSX.cs" />
    <Compile Include="System\Net\Security\SslStreamPal.OSX.cs" />
    <Compile Include="System\Net\Security\StreamSizes.OSX.cs" />
    <Compile Include="System\Net\Security\CipherSuitesPolicyPal.OSX.cs" />
  </ItemGroup>

  <ItemGroup>
    <Reference Include="Microsoft.Win32.Primitives" />
    <Reference Include="System.Collections" />
    <Reference Include="System.Collections.Concurrent" />
    <Reference Include="System.Collections.NonGeneric" />
    <Reference Include="System.Console" Condition="'$(Configuration)' == 'Debug'" />
    <Reference Include="System.Diagnostics.Tracing" />
    <Reference Include="System.Linq" />
    <Reference Include="System.Memory" />
    <Reference Include="System.Net.Primitives" />
    <Reference Include="System.Net.Sockets" />
    <Reference Include="System.Runtime" />
    <Reference Include="System.Runtime.InteropServices" />
    <Reference Include="System.Security.Claims" />
    <Reference Include="System.Security.Cryptography" />
    <Reference Include="System.Security.Principal.Windows" />
    <Reference Include="System.Threading" />
    <Reference Include="System.Threading.ThreadPool" />
  </ItemGroup>

  <ItemGroup Condition="'$(TargetPlatformIdentifier)' != '' and '$(TargetPlatformIdentifier)' != 'windows'">
    <Reference Include="System.Diagnostics.StackTrace" />
    <Reference Include="System.Security.Cryptography" />
    <Reference Include="System.Runtime.Numerics" />
    <ProjectReference Include="$(LibrariesProjectRoot)System.Formats.Asn1\src\System.Formats.Asn1.csproj" />
  </ItemGroup>

</Project>
